package com.yc.system.service;

import javax.servlet.http.HttpServletRequest;

public interface IpLimitService {

    /**
     * 检查IP访问是否超过限制
     *
     * @param request        HTTP请求
     * @param isLoginRequest 是否是登录/注册请求
     * @return 是否允许访问
     */
    boolean checkIpLimit(HttpServletRequest request, boolean isLoginRequest);

    /**
     * 记录用户访问
     *
     * @param request HTTP请求
     * @param userId  用户ID，未登录时为null
     * @param uri     请求URI
     */
    void recordAccess(HttpServletRequest request, Long userId, String uri);

    /**
     * 检查用户是否被禁用
     *
     * @param userId 用户ID
     * @return 是否被禁用
     */
    boolean isUserBanned(Long userId);

    /**
     * 判断用户是否应该被禁用
     *
     * @param userId 用户ID
     * @return 是否应该被禁用
     */
    boolean shouldBanUser(Long userId);

    /**
     * 禁用用户
     *
     * @param userId 用户ID
     */
    void banUser(Long userId);

    /**
     * 检查IP是否被禁止
     *
     * @param ipAddress IP地址
     * @return 是否被禁止
     */
    boolean isIpBanned(String ipAddress);

    /**
     * 记录IP违规
     *
     * @param ipAddress IP地址
     */
    void recordIpViolation(String ipAddress);
}